package com.question.service;

import com.question.pojo.dto.*;
import com.question.pojo.entity.User;
import com.question.pojo.result.PageResult;
import com.question.pojo.vo.UserSortVO;

import java.util.Map;

public interface UserService {

    /**
     * 用户登录
     * @param userLoginDTO
     * @return
     */
    User login(UserLoginDTO userLoginDTO);

    /**
     * 退出登录
     * @param token
     */
    void logout(String token);

    /**
     * 用户注册
     * @param userRegisterDTO
     */
    void register(UserRegisterDTO userRegisterDTO);

    /**
     * 修改个人信息
     * @param userDTO
     */
    void modifyInfo(UserDTO userDTO);

    /**
     * 修改密码
     * @param userRepasswordDTO
     */
    void editPassword(UserRepasswordDTO userRepasswordDTO, String token);

    /**
     * 根据id查询用户信息
     * @return
     */
    User getById();

    /**
     * 获取所有用户排行信息
     * @return
     */
    UserSortVO getSortAll();




    PageResult getUserPage(UserPageDTO dto);

    Map<String, Object> getUserStatistics();

    UserStatisticsDTO getUserBehaviorStatistics(Long userId);

    void toggleAdminStatus(Long userId, Boolean isAdmin);

    void resetPassword(Long userId, String newPassword);

    void updateUser(UserDTO userDTO);
}
